function PathHotPoint(transition) {
    this.transition = transition;
    this.boxPoint = {
        fill: "#39F",
        stroke: "none"
    };
    this.dragCtl = context.paper.set();
    var path = transition.view.attr("path");
    for (var i = 0; i < path.length; i++) {
        if (i != 0 && i != path.length - 1) {
            var box = this.transition.startActivity.context.paper.rect(path[i][1] - 3, path[i][2] - 3, 6, 6).attr(this.boxPoint);
            box.data = transition;
            box.id = i;
            this.dragCtl.push(box);
            this.dragCtl[this.dragCtl.length - 1].update = function(dx, dy) {
                this.attr({
                    x: this.attr("x") + dx,
                    y: this.attr("y") + dy
                });
                this.data.updateMove(this.id, dx, dy);
				var flag;
				if (this.id == 1) {
					flag = "start";
				} else if (this.id == path.length - 2) {
					flag = "end";
				}
				updateTransitionXY(this.data, flag);
            };
        }
    }
    this.dragCtl.drag(nodeMoveEvent, nodeMoveStartEvent, nodeMoveEndEvent);
}

PathHotPoint.prototype.remove = function(id, dx, dy) {
    for (var i = 0; i < this.dragCtl.length; i++) {
        this.dragCtl[i].remove();
    }
    
};
